var ajax;
var dadosUsuario;

/* cria o objeto e faz a requisiçao */
function requisicaoHTTP (tipo, url, assinc) {
    
    if (window.XMLHttpRequest) { // Mozilla, Safari
        ajax = new XMLHttpRequest();
    } else if (window.ActiveXObject) { // Carniça Explorer
        ajax = new ActiveXObject("Msxml2.XMLHTTP");
        if (!ajax) {
            ajax = new ActiveXObject("Microsoft.XMLHTTP");
        }
    }
    
    if (ajax) { // iniciou com sucesso
        iniciaRequisicao(tipo, url, assinc);
    } else {
        alert("Seu navegador não possui suporte para esta aplicação");
    }
    
    /* Inicializa o objeto ciado e envia os dados (se existirem) */
    function iniciaRequisicao(tipo, url, bool) {
        
        ajax.onreadystatechange = trataResposta;
        ajax.open(tipo, url, bool);
        ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
        ajax.overrideMimeType("text/XML");
        ajax.send(dadosUsuario);
    }
    
    /* inicia requisição com o envio de dados */
    function enviaDados (url) {
        
        criaQueryString();
        requisicaoHTTP("POST", url, true);
    }
    
    /* cria a string a ser enviada, formato campo1=valor1&campo2=valor2... */
    function criaQueryString () {
        
        dadosUsuario = "";
        var frm = document.forms[0];
        var numElementos = frm.elements.length;
        
        for (var i = 0;i < numElementos;i++) {
            
            if (i < numElementos-1){
                dadosUsuario += frm.elements[i].name+"="+
                    encodeURIComponent(frm.elements[i].value)+"&";
            } else {
                dadosUsuario += frm.elements[i].name+"="+
                    encodeURIComponent(frm.elements[i].value);
            } // fim else
        } // fim for
    } // fim function
    
    /* trata a resposta do servidor */
    function trataResposta () {
        
        if (ajax.readyState == 4) {
            if (ajax.status == 200) {
                trataDados();
            } else {
                alert ("problema na comunicação com o Objeto XMLHttpRequest");
            }
        }
    }
}